{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Modeling and Simulation in Python\n",
    "\n",
    "Chapter 11\n",
    "\n",
    "Copyright 2017 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure Jupyter so figures appear in the notebook\n",
    "%matplotlib inline\n",
    "\n",
    "# Configure Jupyter to display the assigned value after an assignment\n",
    "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
    "\n",
    "# import functions from the modsim.py module\n",
    "from modsim import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SIR implementation\n",
    "\n",
    "We'll use a `State` object to represent the number (or fraction) of people in each compartment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "S    89\n",
       "I     1\n",
       "R     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "init = State(S=89, I=1, R=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To convert from number of people to fractions, we divide through by the total."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0.988889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0.011111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "S    0.988889\n",
       "I    0.011111\n",
       "R    0.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "init /= sum(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`make_system` creates a `System` object with the given parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_system(beta, gamma):\n",
    "    \"\"\"Make a system object for the SIR model.\n",
    "    \n",
    "    beta: contact rate in days\n",
    "    gamma: recovery rate in days\n",
    "    \n",
    "    returns: System object\n",
    "    \"\"\"\n",
    "    init = State(S=89, I=1, R=0)\n",
    "    init /= sum(init)\n",
    "\n",
    "    t0 = 0\n",
    "    t_end = 7 * 14\n",
    "\n",
    "    return System(init=init, t0=t0, t_end=t_end,\n",
    "                  beta=beta, gamma=gamma)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's an example with hypothetical values for `beta` and `gamma`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>init</th>\n",
       "      <td>S    0.988889\n",
       "I    0.011111\n",
       "R    0.000000\n",
       "dtyp...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t0</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>beta</th>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gamma</th>\n",
       "      <td>0.25</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "init     S    0.988889\n",
       "I    0.011111\n",
       "R    0.000000\n",
       "dtyp...\n",
       "t0                                                       0\n",
       "t_end                                                   98\n",
       "beta                                              0.333333\n",
       "gamma                                                 0.25\n",
       "dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tc = 3      # time between contacts in days \n",
    "tr = 4      # recovery time in days\n",
    "\n",
    "beta = 1 / tc      # contact rate in per day\n",
    "gamma = 1 / tr     # recovery rate in per day\n",
    "\n",
    "system = make_system(beta, gamma)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The update function takes the state during the current time step and returns the state during the next time step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def update_func(state, t, system):\n",
    "    \"\"\"Update the SIR model.\n",
    "    \n",
    "    state: State with variables S, I, R\n",
    "    t: time step\n",
    "    system: System with beta and gamma\n",
    "    \n",
    "    returns: State object\n",
    "    \"\"\"\n",
    "    s, i, r = state\n",
    "\n",
    "    infected = system.beta * i * s    \n",
    "    recovered = system.gamma * i\n",
    "    \n",
    "    s -= infected\n",
    "    i += infected - recovered\n",
    "    r += recovered\n",
    "    \n",
    "    return State(S=s, I=i, R=r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To run a single time step, we call it like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0.985226</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0.011996</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0.002778</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "S    0.985226\n",
       "I    0.011996\n",
       "R    0.002778\n",
       "dtype: float64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "state = update_func(init, 0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can run a simulation by calling the update function for each time step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_simulation(system, update_func):\n",
    "    \"\"\"Runs a simulation of the system.\n",
    "    \n",
    "    system: System object\n",
    "    update_func: function that updates state\n",
    "    \n",
    "    returns: State object for final state\n",
    "    \"\"\"\n",
    "    state = system.init\n",
    "    \n",
    "    for t in linrange(system.t0, system.t_end):\n",
    "        state = update_func(state, t, system)\n",
    "        \n",
    "    return state"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result is the state of the system at `t_end`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0.520568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0.000666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0.478766</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "S    0.520568\n",
       "I    0.000666\n",
       "R    0.478766\n",
       "dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "run_simulation(system, update_func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**  Suppose the time between contacts is 4 days and the recovery time is 5 days.  After 14 weeks, how many students, total, have been infected?\n",
    "\n",
    "Hint: what is the change in `S` between the beginning and the end of the simulation?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3787177442414792"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "tc = 4      # time between contacts in days \n",
    "tr = 5      # recovery time in days\n",
    "\n",
    "beta = 1 / tc      # contact rate in per day\n",
    "gamma = 1 / tr     # recovery rate in per day\n",
    "\n",
    "system = make_system(beta, gamma)\n",
    "s0 = system.init.S\n",
    "\n",
    "final = run_simulation(system, update_func)\n",
    "s_end = final.S\n",
    "s0 - s_end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using TimeSeries objects"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we want to store the state of the system at each time step, we can use one `TimeSeries` object for each state variable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_simulation(system, update_func):\n",
    "    \"\"\"Runs a simulation of the system.\n",
    "    \n",
    "    Add three Series objects to the System: S, I, R\n",
    "    \n",
    "    system: System object\n",
    "    update_func: function that updates state\n",
    "    \"\"\"\n",
    "    S = TimeSeries()\n",
    "    I = TimeSeries()\n",
    "    R = TimeSeries()\n",
    "\n",
    "    state = system.init\n",
    "    t0 = system.t0\n",
    "    S[t0], I[t0], R[t0] = state\n",
    "    \n",
    "    for t in linrange(system.t0, system.t_end):\n",
    "        state = update_func(state, t, system)\n",
    "        S[t+1], I[t+1], R[t+1] = state\n",
    "    \n",
    "    return S, I, R"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's how we call it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "tc = 3      # time between contacts in days \n",
    "tr = 4      # recovery time in days\n",
    "\n",
    "beta = 1 / tc      # contact rate in per day\n",
    "gamma = 1 / tr     # recovery rate in per day\n",
    "\n",
    "system = make_system(beta, gamma)\n",
    "S, I, R = run_simulation(system, update_func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then we can plot the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_results(S, I, R):\n",
    "    \"\"\"Plot the results of a SIR model.\n",
    "    \n",
    "    S: TimeSeries\n",
    "    I: TimeSeries\n",
    "    R: TimeSeries\n",
    "    \"\"\"\n",
    "    plot(S, '--', label='Susceptible')\n",
    "    plot(I, '-', label='Infected')\n",
    "    plot(R, ':', label='Recovered')\n",
    "    decorate(xlabel='Time (days)',\n",
    "             ylabel='Fraction of population')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's what they look like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure to file figs/chap11-fig01.pdf\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(S, I, R)\n",
    "savefig('figs/chap11-fig01.pdf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using a DataFrame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instead of making three `TimeSeries` objects, we can use one `DataFrame`.\n",
    "\n",
    "We have to use `row` to selects rows, rather than columns.  But then Pandas does the right thing, matching up the state variables with the columns of the `DataFrame`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_simulation(system, update_func):\n",
    "    \"\"\"Runs a simulation of the system.\n",
    "        \n",
    "    system: System object\n",
    "    update_func: function that updates state\n",
    "    \n",
    "    returns: TimeFrame\n",
    "    \"\"\"\n",
    "    frame = TimeFrame(columns=system.init.index)\n",
    "    frame.row[system.t0] = system.init\n",
    "    \n",
    "    for t in linrange(system.t0, system.t_end):\n",
    "        frame.row[t+1] = update_func(frame.row[t], t, system)\n",
    "    \n",
    "    return frame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's how we run it, and what the result looks like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>S</th>\n",
       "      <th>I</th>\n",
       "      <th>R</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.988889</td>\n",
       "      <td>0.011111</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.985226</td>\n",
       "      <td>0.011996</td>\n",
       "      <td>0.002778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.981287</td>\n",
       "      <td>0.012936</td>\n",
       "      <td>0.005777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.977055</td>\n",
       "      <td>0.013934</td>\n",
       "      <td>0.009011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.972517</td>\n",
       "      <td>0.014988</td>\n",
       "      <td>0.012494</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          S         I         R\n",
       "0  0.988889  0.011111  0.000000\n",
       "1  0.985226  0.011996  0.002778\n",
       "2  0.981287  0.012936  0.005777\n",
       "3  0.977055  0.013934  0.009011\n",
       "4  0.972517  0.014988  0.012494"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tc = 3      # time between contacts in days \n",
    "tr = 4      # recovery time in days\n",
    "\n",
    "beta = 1 / tc      # contact rate in per day\n",
    "gamma = 1 / tr     # recovery rate in per day\n",
    "\n",
    "system = make_system(beta, gamma)\n",
    "results = run_simulation(system, update_func)\n",
    "results.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can extract the results and plot them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(results.S, results.I, results.R)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercises\n",
    "\n",
    "**Exercise**  Suppose the time between contacts is 4 days and the recovery time is 5 days.  Simulate this scenario for 14 weeks and plot the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3hUVfrA8e/MZNJ7J5AQCOHQJRCI9C4iCtgLP8vau8vaUbBjW1wbirou6i6ugmUVFUERwYKAShcONZSEkN7rZOb3x51MCgEGTAPez/Pkmbnnnpn7zoh5c849xeRwOBBCCCHaGnNrByCEEEI0RhKUEEKINkkSlBBCiDZJEpQQQog2yaO1A2hqSikvYABwEKhu5XCEEEI0zgK0A9ZqrSsaq3DKJSiM5PRDawchhBDCLcOAHxs7cSomqIMA8+fPJzo6urVjEUII0YiMjAymTp0Kzt/ZjTkVE1Q1QHR0NB06dGjtWIQQQhzdEW/FyCAJIYQQbZIkKCGEEG1Sq3TxKaUGAl9orSOPcD4OeBs4E8gE7tBaf9WCIQohhGhlLdqCUkqZlFLXA0sBz6NU/QDYCIQBNwAfKKU6t0CIQggh2oiW7uJ7DLgFePJIFZRSXYFkYKbWulJr/R3wOXBdy4QohBCiLWjpBDVXa90f+PUodXoA+7TWJXXKtgG9mzUyIYQQbUqLJiitdbob1fyB0gZlpYBv00fUuNLyKvZlFGKrtrfUJYUQQjTQFudBlQA+Dcp8geKWCmDL7hwef3s1HhYTHSIDiIsOIL5doPMniPBgb0wmU0uFI4QQp6W2mKD+AOKUUj5a6zJnWTdneYuorLITFerLodxSUg8WknqwkJXr0lznP3zqHHy9rQBs2JFFkL8XsZH+WCwyal8IIZpKm0tQWmutlNoAPKWUehAYDEwGBrVUDEPOiGHIGTGUVdjYl1HI3owi9joTVVmFzZWcAF78YB3Z+WV4epiJjwmkS4dg4yc2mLioAElaQog25cCBAyfNKjttIkEppaYCb2it/Z1FFwJvYsyBygau01pvbum4fLw8UB1DUR1DGz1fZbPTNS4YD4uJjJxStu/LZ/u+fNf5qyf24KLRiQDkF1VQaasmIthHugeFOIVkZ2fz3HPP8cMPP1BWVkZkZCSTJk3i5ptvxsOjTfyKdXnuueeoqqrioYceIj09nYkTJ7Jy5UoKCgoYM2YMa9euJTAw8LDXXXnllYwZM4ZrrrmmReNtlW9Pa/09EFzneD4wv87xfmBCy0d2fKweZh68eiAAxaWV7EorYNeBfHbsN34SY10fkW/W7OW9r7YSEuCF6hhC9/hQuseHkdAhCE+rpbU+ghDiT/rb3/5GXFwcS5YsITAwkB07dnDHHXdQVVXFtGnTWju8enJzcwkICAAgJiaGdevWAVBQUNCaYR2R9D81EX9fT85IjOCCUYncf9UA/vnQOPp0CXedt1U78PexkldUwS+bM5j3xR/c9+oPXPrQV8x6Z00rRi6E+DM2bNjA+PHjXS2PxMREpk+fjo+PD6tXryY5Oble/dGjR/Ptt98C8PHHHzN27FgGDBjAhRdeyMqVK131li9fzqRJk0hKSmLKlCmsXbsWgOrqaubOncuYMWNISUnhrrvuIjc3F4DVq1czfvx4Zs2aRb9+/Rg1ahQff/wxAPPmzWPRokX897//5eabb+bAgQMopSgsLHRd87333mP48OGMHj2af/7zn41+3oqKCp5++mlGjBjBkCFDmDlzJqWlDQdeN4221f48xdTtyrv8LMVl47qSllWM3pvH1tRctqXmsu9QEeY69UrKqpj++k/06BRKr4RwenUOI8jfqzXCF6LNOO/uz4547raLzuDsQfEAfL0qlTkfbThi3UWzJ7ue//Uf37PrQMERz7trwoQJ3HPPPUyaNImUlBT69evH8OHDGT58OKtXrz7i63Jzc5kxYwafffYZiYmJLFy4kCeffJIlS5awc+dO7rzzTv7xj38wevRoPv/8c2699VZWrlzJBx98wOeff868efOIjIzk2WefZdq0abz77rsApKamMnjwYFatWsXGjRu5/vrr6dy5M3/5y1/QWhMQEMBDDz3EgQMHDotpx44dLF68mLS0NK655hpiY2MZP358vTrPP/88W7du5eOPP8bLy4sHHniAJ598klmzZh33d3cskqBakMlkDFvvEBnAmAFxABSXVVFaVuWqszU1l91pBexOK+CLH/cAEN8ukN5dwunTJZwkFYmXdAkK0WbMmjWLzz77jK+//ppPPvmEkpISBg4cyIwZM476Ok9PTzw8PPjoo48499xzueCCC7joooswmUwsXryYQYMGMXbsWACmTJlCx44dsVgsLFiwgDvuuIO4OON3yL333ktycjKp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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "tc = 4      # time between contacts in days \n",
    "tr = 5      # recovery time in days\n",
    "\n",
    "beta = 1 / tc      # contact rate in per day\n",
    "gamma = 1 / tr     # recovery rate in per day\n",
    "\n",
    "system = make_system(beta, gamma)\n",
    "results = run_simulation(system, update_func)\n",
    "\n",
    "plot_results(results.S, results.I, results.R)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
